package com.ds.infrastructure.hyperspace.console.service;

import com.ds.infrastructure.hyperspace.console.entity.page.TbPageWhere;
import com.ds.infrastructure.hyperspace.console.entity.where.TbCustomWhere;

import java.util.List;

/**
 * @param <T> Table
 */
public interface BaseService<T> {

    int save(T record);

    int update(T record);

    T get(Long id);

    int delete(Long id);

    /**
     * 分页查询
     *
     * @param where       自动生成的查询条件
     * @param customWhere 自定义的查询条件
     * @param pageWhere   分页条件
     * @return
     */
    List<T> getList(T where, TbCustomWhere customWhere, TbPageWhere pageWhere);

    /**
     * 查询总数
     *
     * @param where       自动生成的查询条件
     * @param customWhere 自定义的查询条件
     * @return
     */
    int getTotal(T where, TbCustomWhere customWhere);

    /**
     * 查询一条记录
     *
     * @param where       自动生成的查询条件
     * @param customWhere 自定义的查询条件
     * @return
     */
    T selectOne(T where, TbCustomWhere customWhere);
}
